pub type Crate = char;

#[derive(Clone, Debug)]
pub struct Stack {
    vector: Vec<Crate>
}

impl Stack {
    pub fn new() -> Self {
        Self {
            vector: Vec::new()
        }
    }

    pub fn push(&mut self, c: Crate) {
        self.vector.push(c);
    }

    pub fn pop(&mut self) -> Crate {
        self.vector.pop().unwrap()
    }

    pub fn last(&self) -> Crate {
        *self.vector.last().unwrap()
    }
}